package com.hqd.ch03.v11.beans.property;

import com.hqd.ch03.v11.config.PropertyValue;

/**
 * bean操作属性接口
 */
public interface PropertyAccessor {
    /**
     * 根据属性名获取属性类型
     *
     * @param propertyName 属性名
     * @return
     */
    Class<?> getPropertyType(String propertyName);

    /**
     * 根据属性名获取属性值
     *
     * @param propertyName 属性名
     * @return
     */
    Object getPropertyValue(String propertyName);

    /**
     * 设置属性值
     *
     * @param propertyName 属性名
     * @param value        属性值
     * @param isRef        是否引用类型
     */
    void setPropertyValue(String propertyName, Object value, boolean isRef);

    /**
     * 通过{@link PropertyValue}设置属性值
     *
     * @param pv
     */
    void setPropertyValue(PropertyValue pv);
}
